package com.woniuxy.api;

import com.woniuxy.entity.Product;
import com.woniuxy.entity.utils.ResponseEntity;
import com.woniuxy.hystirx.FallBackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * @Author: 马宇航
 * @Description: feign接口，用于远程调用product提供者！ 使用接口的理由，类似dao接口！
 * @DateTime: 22/06/23/0023 上午 11:02
 * @Component: 成都蜗牛学苑
 **/
//这个注解的意思是：指定服务提供者。
@FeignClient(value = "myh-product",fallbackFactory = FallBackFactory.class)
public interface RemoteProductServer {
    //http://(类注解)myh-product/product/2
    @GetMapping("/product/{id}")
    ResponseEntity findOneById(@PathVariable("id") Integer id);
    @PostMapping("/product")
    ResponseEntity addProduct(Product product);
    /**
     * 调用product服务的商品范围 方案一
     * ChangeLog : 1. 创建 (22/06/23/0023 下午 2:07 [马宇航]);
     * @param minimumInventory
     * @param maxInventory
     * @return com.woniuxy.entity.utils.ResponseEntity
    */
    @GetMapping("/search1")
    ResponseEntity search1(@RequestParam("minimumInventory") Integer minimumInventory,@RequestParam("maxInventory") Integer maxInventory);
    /**
     * 调用product服务的商品范围 方案二 Map模式
     * ChangeLog : 1. 创建 (22/06/23/0023 下午 2:07 [马宇航]);
     * @return com.woniuxy.entity.utils.ResponseEntity
    */
    @GetMapping("/search1")
    ResponseEntity search2(@SpringQueryMap Map<String,Object> map);
}
